﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace Dominio {
    public class Lancamento {
        public virtual long Id { get; set; }
        public virtual decimal Valor { get; protected set; }
        public virtual DateTime Data { get; protected set; }
        public virtual TipoLancamento Tipo { get; protected set; }
        public virtual Contrato Contrato { get; protected set; }
        public virtual Conta Conta { get; protected set; }
        public virtual CategoriaBase Categoria { get; protected set; }

        protected Lancamento() { }
        public Lancamento(decimal valor, DateTime data, TipoLancamento tipo, Contrato contrato, CategoriaBase categoria, Conta conta) {
            this.Valor = valor;
            this.Data = data;
            this.Tipo = tipo;
            this.Contrato = contrato;
            this.Categoria = categoria;
            this.Conta = conta;
        }

        public virtual void Consolidar() {
            this.Data = DateTime.Now;
            this.Tipo = TipoLancamento.CONSOLIDADO;
        }

        public virtual void Abrir() {
            this.Tipo = TipoLancamento.ABERTO;
        }
    }
}
